#!/usr/bin/env python
# *-* coding: utf-8 *-*
#imports
import pygame, random, sys, os
from sys import exit
from pygame.locals import *
import classico

def main():
	
	pressed = False
	width, height = 800, 600

	pygame.init()
	screen = pygame.display.set_mode((width, height), 0, 32)
	pygame.display.set_caption("Minesweepy")
	background = pygame.image.load("Novas_Imagens" + os.sep + "background2.png").convert_alpha()
	som_jogar = pygame.mixer.Sound("sons" + os.sep + "bip.ogg")
	som_jogar.set_volume(1.0)
	clock = pygame.time.Clock()

	#Botao Voltar
	botoes_voltar = [pygame.image.load("Novas_Imagens" + os.sep + "voltar_" + str(i) + ".png").convert_alpha() for i in range(3)]
	botao_voltar = botoes_voltar[0]
	tamanho_voltar = botao_voltar.get_size()
	posicao_voltar = (0, 550)

	#Botao Facil
	botoes_classico = [pygame.image.load("Novas_Imagens" + os.sep + "facil_" + str(i) + ".png").convert_alpha() for i in range(3)]
	botao_classico = botoes_classico[0]
	tamanho_classico = botao_classico.get_size()
	posicao_classico = (300, 85)

	#Botao Medio
	botoes_dificil = [pygame.image.load("Novas_Imagens" + os.sep + "medio_" + str(i) + ".png").convert_alpha() for i in range(3)]
	botao_dificil = botoes_dificil[0]
	tamanho_dificil = botao_dificil.get_size()
	posicao_dificil = (290, 195)

	#Botao Dificil
	botoes_insano = [pygame.image.load("Novas_Imagens" + os.sep + "dificil_" + str(i) + ".png").convert_alpha() for i in range(3)]
	botao_insano = botoes_insano[0]
	tamanho_insano = botao_insano.get_size()
	posicao_insano = (285, 305)
	
	#Botao personalizado
	botoes_personalizado = [pygame.image.load("Novas_Imagens" + os.sep + "personalizado_" + str(i) + ".png").convert_alpha() for i in range(3)]
	botao_personalizado = botoes_personalizado[0]
	tamanho_personalizado = botao_personalizado.get_size()
	posicao_personalizado = (185, 415)

	
	####### BOTAO CLASSICO #########

	while True:
		clock.tick(30)
		for event in pygame.event.get():
			if event.type == QUIT:
				exit()
		#chamada a utilização do mouse
		posicao_mouse = pygame.mouse.get_pos()
		mouse_pressionado = pygame.mouse.get_pressed()
		
		# Clique Botao voltar

		if posicao_voltar[0] <= posicao_mouse[0] <= posicao_voltar[0] + tamanho_voltar[0] and posicao_voltar[1] <= posicao_mouse[1] <= posicao_voltar[1] + tamanho_voltar[1]:

			botao_voltar = botoes_voltar[1]

			if mouse_pressionado[0]:
				botao_voltar = botoes_voltar[2]
				pressed = True
				

			if pressed and not mouse_pressionado[0]:
				botao_voltar = botoes_voltar[1]
				pressed = False
				break
				
		else:
			botao_voltar = botoes_voltar[0]

		
		# Clique Botao Classico

		if posicao_classico[0] <= posicao_mouse[0] <= posicao_classico[0] + tamanho_classico[0] and posicao_classico[1] <= posicao_mouse[1] <= posicao_classico[1] + tamanho_classico[1]:

			botao_classico = botoes_classico[1]

			if mouse_pressionado[0]:
				botao_classico = botoes_classico[2]
				pressed = True
				

			if pressed and not mouse_pressionado[0]:
				botao_classico = botoes_classico[1]
				pressed = False
				som_jogar.play()
				classico.classic(9, 9, 10,"classic_facil.dat")
				return
		else:
			botao_classico = botoes_classico[0]
		
		# Clique Dificil

		if posicao_dificil[0] <= posicao_mouse[0] <= posicao_dificil[0] + tamanho_dificil[0] and posicao_dificil[1] <= posicao_mouse[1] <= posicao_dificil[1] + tamanho_dificil[1]:

			botao_dificil = botoes_dificil[1]

			if mouse_pressionado[0]:
				botao_dificil = botoes_dificil[2]
				pressed = True


			if pressed and not mouse_pressionado[0]:
				botao_dificil = botoes_dificil[1]
				pressed = False
				som_jogar.play()
				classico.classic(16, 16, 40,"classic_medio.dat")
				return

		else:
			botao_dificil = botoes_dificil[0]

		# Clique Insano

		if posicao_insano[0] <= posicao_mouse[0] <= posicao_insano[0] + tamanho_insano[0] and posicao_insano[1] <= posicao_mouse[1] <= posicao_insano[1] + tamanho_insano[1]:

			botao_insano = botoes_insano[1]

			if mouse_pressionado[0]:
				botao_insano = botoes_insano[2]
				pressed = True


			if pressed and not mouse_pressionado[0]:
				botao_insano = botoes_insano[1]
				pressed = False
				som_jogar.play()
				classico.classic(26, 20, 150,"classic_dificil.dat")
				return

		else:
			botao_insano = botoes_insano[0]
		
		# Clique Personalizado

		if posicao_personalizado[0] <= posicao_mouse[0] <= posicao_personalizado[0] + tamanho_personalizado[0] and posicao_personalizado[1] <= posicao_mouse[1] <= posicao_personalizado[1] + tamanho_personalizado[1]:

			botao_personalizado = botoes_personalizado[1]

			if mouse_pressionado[0]:
				botao_personalizado = botoes_personalizado[2]
				pressed = True


			if pressed and not mouse_pressionado[0]:
				botao_personalizado = botoes_personalizado[1]
				personalizado()
				return

		else:
			botao_personalizado = botoes_personalizado[0]

		
		
		if not mouse_pressionado[0]:
			pressed = False
	
		####################################

		screen.blit(background , (0, 0))
		screen.blit(botao_classico , posicao_classico)
		screen.blit(botao_dificil , posicao_dificil)
		screen.blit(botao_insano , posicao_insano)
		screen.blit(botao_voltar , posicao_voltar)
		screen.blit(botao_personalizado , posicao_personalizado)
		pygame.display.update() # update()

def personalizado():
	
	pressed = False
	width, height = 800, 600
	screen = pygame.display.set_mode((width, height), 0, 32)
	pygame.display.set_caption("Campo Minado")
	background = pygame.image.load("Novas_Imagens" + os.sep + "background2.png").convert_alpha()
	texto = pygame.font.SysFont("Courrier New", 37)
	clock = pygame.time.Clock()
	fonte2 = pygame.font.Font("fonts" + os.sep + "GAMBLER.TTF", 50)
	cor = (255, 255, 255)
	nome_linhas = fonte2.render("Linhas:", True, (214,66,16))
	nome_colunas = fonte2.render("Colunas:", True, (214,66,16))
	nome_bombas = fonte2.render("Minas:", True, (214,66,16))
	linhas,colunas,bombas = 9,9,30
	som_jogar = pygame.mixer.Sound("sons" + os.sep + "bip.ogg")
	som_jogar.set_volume(1.0)
	
	#### botao de diminuir ####
	botoes_menos = [pygame.image.load("Novas_Imagens" + os.sep + "menos_" + str(i) + ".png").convert_alpha() for i in range(4)]
	botao_menos = botoes_menos[0]
	tamanho_menos = botao_menos.get_size()
	botao_linha_menos = botao_menos
	botao_coluna_menos = botao_menos
	botao_bomba_menos = botao_menos
	posicao_linha_menos = (319,152)
	posicao_coluna_menos = (319,214)
	posicao_bomba_menos = (319,276)
	
	
	#### botao de aumentar ####
	botoes_mais = [pygame.image.load("Novas_Imagens" + os.sep + "mais_" + str(i) + ".png").convert_alpha() for i in range(4)]
	botao_mais = botoes_mais[0]
	tamanho_mais = botao_mais.get_size()
	botao_linha_mais = botao_mais
	botao_coluna_mais = botao_mais
	botao_bomba_mais = botao_mais
	posicao_linha_mais = (616,152)
	posicao_coluna_mais = (616,214)
	posicao_bomba_mais = (616,276)
	
	##### botao jogar #####
	botoes_jogar = [pygame.image.load("Novas_Imagens" + os.sep + "jogar_" + str(i) + ".png").convert_alpha() for i in range(3)]
	botao_jogar = botoes_jogar[0]
	tamanho_jogar = botao_jogar.get_size()
	posicao_jogar = (370,500)
	
	#Botao Voltar
	botoes_voltar = [pygame.image.load("Novas_Imagens" + os.sep + "voltar_" + str(i) + ".png").convert_alpha() for i in range(3)]
	botao_voltar = botoes_voltar[0]
	tamanho_voltar = botao_voltar.get_size()
	posicao_voltar = (0, 550)
	
	
	while True:
		clock.tick(30)
		for event in pygame.event.get():
			if event.type == QUIT:
				return
		#chamada a utilização do mouse
		posicao_mouse = pygame.mouse.get_pos()
		mouse_pressionado = pygame.mouse.get_pressed()
		
		# Clique Botao voltar

		if posicao_voltar[0] <= posicao_mouse[0] <= posicao_voltar[0] + tamanho_voltar[0] and posicao_voltar[1] <= posicao_mouse[1] <= posicao_voltar[1] + tamanho_voltar[1]:

			botao_voltar = botoes_voltar[1]

			if mouse_pressionado[0]:
				botao_voltar = botoes_voltar[2]
				pressed = True
				

			if pressed and not mouse_pressionado[0]:
				botao_voltar = botoes_voltar[1]
				pressed = False
				
				
		else:
			botao_voltar = botoes_voltar[0]
		
		##### tratamento botao de diminuir linhas #####
		if posicao_linha_menos[0] <= posicao_mouse[0] <= posicao_linha_menos[0] + tamanho_menos[0] and posicao_linha_menos[1] <= posicao_mouse[1] <= posicao_linha_menos[1] + tamanho_menos[1] and linhas > 5:

			botao_linha_menos = botoes_menos[1]

			if mouse_pressionado[0] == 1 and linhas > 5:
				botao_linha_menos = botoes_menos[2]
				pressed = True

			if pressed and not mouse_pressionado[0] and linhas > 5 :
				botao_linha_menos = botoes_menos[1]
				linhas -= 1
				bombas = (linhas*colunas) - 1
				pressed = False
				
				
		elif linhas == 5:
			botao_linha_menos = botoes_menos[3]
			
		else:
			botao_linha_menos = botoes_menos[0]
			
			
			
			
			##### tratamento botao de diminuir colunas #####
		if posicao_coluna_menos[0] <= posicao_mouse[0] <= posicao_coluna_menos[0] + tamanho_menos[0] and posicao_coluna_menos[1] <= posicao_mouse[1] <= posicao_coluna_menos[1] + tamanho_menos[1] and colunas > 5:

			botao_coluna_menos = botoes_menos[1]

			if mouse_pressionado[0] == 1 and colunas > 5:
				botao_coluna_menos = botoes_menos[2]
				pressed = True

			if pressed and not mouse_pressionado[0] and colunas > 5 :
				botao_coluna_menos = botoes_menos[1]
				colunas -= 1
				bombas = (linhas*colunas) - 1
				pressed = False
				
				
		elif colunas == 5:
			botao_coluna_menos = botoes_menos[3]
			
		else:
			botao_coluna_menos = botoes_menos[0]
			
		
		##### tratamento botao de diminuir bombas #####
		if posicao_bomba_menos[0] <= posicao_mouse[0] <= posicao_bomba_menos[0] + tamanho_menos[0] and posicao_bomba_menos[1] <= posicao_mouse[1] <= posicao_bomba_menos[1] + tamanho_menos[1] and bombas > 1:

			botao_bomba_menos = botoes_menos[1]

			if mouse_pressionado[0] == 1 and bombas > 1:
				botao_bomba_menos = botoes_menos[2]
				pressed = True

			if pressed and not mouse_pressionado[0] and bombas > 1 :
				botao_bomba_menos = botoes_menos[1]
				bombas -= 1
				pressed = False
				
				
		elif bombas == 1:
			botao_bomba_menos = botoes_menos[3]
			
		else:
			botao_bomba_menos = botoes_menos[0]
		
		
		##### tratamento botao de aumentar linhas #####
		if posicao_linha_mais[0] <= posicao_mouse[0] <= posicao_linha_mais[0] + tamanho_mais[0] and posicao_linha_mais[1] <= posicao_mouse[1] <= posicao_linha_mais[1] + tamanho_mais[1] and linhas < 25:

			botao_linha_mais = botoes_mais[1]

			if mouse_pressionado[0] == 1 and linhas < 25:
				botao_linha_mais = botoes_mais[2]
				pressed = True

			if pressed and not mouse_pressionado[0] and linhas < 25 :
				botao_linha_mais = botoes_mais[1]
				linhas += 1
				pressed = False
				
				
		elif linhas == 25:
			botao_linha_mais = botoes_mais[3]
			
		else:
			botao_linha_mais = botoes_mais[0]
			
		
		#### tratamento botao de aumentar colunas ####
		if posicao_coluna_mais[0] <= posicao_mouse[0] <= posicao_coluna_mais[0] + tamanho_mais[0] and posicao_coluna_mais[1] <= posicao_mouse[1] <= posicao_coluna_mais[1] + tamanho_mais[1] and colunas < 25:

			botao_coluna_mais = botoes_mais[1]

			if mouse_pressionado[0] == 1 and colunas < 25:
				botao_coluna_mais = botoes_mais[2]
				pressed = True

			if pressed and not mouse_pressionado[0] and colunas < 25 :
				botao_coluna_mais = botoes_mais[1]
				colunas += 1
				pressed = False
				
				
		elif colunas == 25:
			botao_coluna_mais = botoes_mais[3]
			
		else:
			botao_coluna_mais = botoes_mais[0]
			
		
		
		#### tratamento botao de aumentar bombas ####
		if posicao_bomba_mais[0] <= posicao_mouse[0] <= posicao_bomba_mais[0] + tamanho_mais[0] and posicao_bomba_mais[1] <= posicao_mouse[1] <= posicao_bomba_mais[1] + tamanho_mais[1] and bombas < (linhas * colunas - 1):

			botao_bomba_mais = botoes_mais[1]

			if mouse_pressionado[0] == 1 and bombas < (linhas * colunas - 1):
				botao_bomba_mais = botoes_mais[2]
				pressed = True

			if pressed and not mouse_pressionado[0] and bombas < (linhas * colunas - 1) :
				botao_bomba_mais = botoes_mais[1]
				bombas += 1
				pressed = False
				
				
		elif bombas == (linhas * colunas - 1):
			botao_bomba_mais = botoes_mais[3]
			
		else:
			botao_bomba_mais = botoes_mais[0]
			
			
			
		##### Botao Jogo #####
		if posicao_jogar[0] <= posicao_mouse[0] <= posicao_jogar[0] + tamanho_jogar[0] and posicao_jogar[1] <= posicao_mouse[1] <= posicao_jogar[1] + tamanho_jogar[1]:
	
			botao_jogar = botoes_jogar[1]
	
			if mouse_pressionado[0]:
				botao_jogar = botoes_jogar[2]
				pressed = True
				
					
			if pressed and not mouse_pressionado[0]:
				botao_jogar = botoes_jogar[1]
				pressed = False
				som_jogar.play()
				classico.classic(linhas,colunas,bombas)
				return
	
		else:
			botao_jogar = botoes_jogar[0]
		
		
		screen.blit(background , (0, 0))
		screen.blit(botao_linha_menos , posicao_linha_menos)
		screen.blit(botao_coluna_menos , posicao_coluna_menos)
		screen.blit(botao_bomba_menos , posicao_bomba_menos)
		screen.blit(botao_linha_mais , posicao_linha_mais)
		screen.blit(botao_coluna_mais , posicao_coluna_mais)
		screen.blit(botao_bomba_mais , posicao_bomba_mais)
		linha_blit = texto.render(str(linhas), True, cor)
		coluna_blit = texto.render(str(colunas), True, cor)
		bomba_blit = texto.render(str(bombas), True, cor)
		pygame.draw.rect(screen, (214, 66, 16), Rect(359, 152, 247, 30))
		pygame.draw.rect(screen, (214, 66, 16), Rect(359, 214, 247, 30))
		pygame.draw.rect(screen, (214, 66, 16), Rect(359, 276, 247, 30))
		screen.blit(nome_linhas,(178,139))
		screen.blit(nome_colunas,(178,201))
		screen.blit(nome_bombas,(178,264))
		screen.blit(linha_blit, (482, 155))
		screen.blit(coluna_blit, (482, 217))
		screen.blit(bomba_blit, (482, 279))
		screen.blit(botao_jogar , posicao_jogar)
		screen.blit(botao_voltar ,posicao_voltar)
		
		
		pygame.display.update()
		